﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;

using Urgencias.Modelo;

namespace Urgencias.Controlador
{
    class ConsultaMedicaControlador
    {
        private static ConsultaMedicaControlador instance;
        ConsultaMedica cm;

        public ConsultaMedicaControlador()
        {
            cm = new ConsultaMedica();
        }

        public static ConsultaMedicaControlador Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new ConsultaMedicaControlador();
                }

                return instance;
            }
        }
        public bool ingresarConsultaMedica(int ID_CONSULTA, int BOLETA, int BOX, string PACIENTE, string MEDICOENCARGADO, DateTime FECHACONSULTA, decimal COSTO, string TIPOPROCEDIMIENTO)
        {
            /*int ID_CONSULTA;
            int BOLETA;
            int BOX;
            string PACIENTE;
            string MEDICOENCARGADO;
            DateTime FECHACONSULTA;
            decimal COSTO;
            string TIPOPROCEDIMIENTO;*/

            try
            {
               // SqlConnection con = new SqlConnection(connectionString);
                SqlCommand com = new SqlCommand();
                

                com.CommandText = "INSERT INTO ATENCIONMEDICA" +
                    "(ID_CONSULTA, BOLETA, BOX, PACIENTE, MEDICOENCARGADO, FECHACONSULTA, COSTO, TIPOPROCEDIMIENTO )" + "VALUES" +
                    "(@id_consulta, @boleta ,@box, @paciente, @medicoencargado, @fechaconsulta, @costo, @tipoprocedimiento )";

                com.Parameters.AddWithValue("@id_urgencia", ID_CONSULTA);
                com.Parameters.AddWithValue("@boleta", BOLETA);
                com.Parameters.AddWithValue("@box", BOX);
                com.Parameters.AddWithValue("@medicoencargado", MEDICOENCARGADO);
                com.Parameters.AddWithValue("@paciente", PACIENTE);
                com.Parameters.AddWithValue("@fechaconsulta", FECHACONSULTA);
                com.Parameters.AddWithValue("@prioridad_urgencia", TIPOPROCEDIMIENTO);
                com.Parameters.AddWithValue("@costo", COSTO);
                
                com.Connection = Conexion.Instance.Con;
                SqlDataReader ejecutar = com.ExecuteReader();
                Conexion.Instance.Con.Close();
                return true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Conexion.Instance.Con.Close();
                return false;
                throw;
            }
        }
        public bool modificarConsultaMedica(int ID_URGENCIA, int NUMEROBOX, string ENCARGADO, string PACIENTE, DateTime FECHAHORA_URGENCIA, string PRIORIDAD_URGENCIA, string ESPECIALIDAD_URGENCIA, string DIAGNOSTICO_URGENCIA)
        {
            try
            {
                SqlCommand com = new SqlCommand();
                

                com.CommandText = "UPDATE URGENCIA " +
                    "SET ID_URGENCIA = @id_urgencia, NUMEROBOX = @numerobox, ENCARGADO = @encargado, PACIENTE = @paciente, FECHAHORA_URGENCIA = @fechahora_urgencia, PRIORIDAD_URGENCIA = @prioridad_urgencia, ESPECIALIDAD_URGENCIA = @especialidad_urgencia, DIAGNOSTICO_URGENCIA = @diagnostico_urgencia" +
                    "WHERE ID_URGENCIA = @id_urgencia";

                com.Parameters.AddWithValue("@id_urgencia", ID_URGENCIA);
                com.Parameters.AddWithValue("@numerobox", NUMEROBOX);
                com.Parameters.AddWithValue("@encargado", ENCARGADO);
                com.Parameters.AddWithValue("@paciente", PACIENTE);
                com.Parameters.AddWithValue("@fechahora", FECHAHORA_URGENCIA);
                com.Parameters.AddWithValue("@prioridad", PRIORIDAD_URGENCIA);
                com.Parameters.AddWithValue("@especialidad", ESPECIALIDAD_URGENCIA);
                com.Parameters.AddWithValue("@diagnostico", DIAGNOSTICO_URGENCIA);

                com.Connection = Conexion.Instance.Con;
                SqlDataReader ejecutar = com.ExecuteReader();
                using (Conexion.Instance.Con)
                {

                    // TODO terminar esto
                }
                //con.Close();

                return true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Conexion.Instance.Con.Close();
                return false;
                throw;
            }
        }

        public bool buscarConsultaMedica(int id, out int ID_URGENCIA, out int NUMEROBOX, out string ENCARGADO, out string PACIENTE, out DateTime FECHAHORA_URGENCIA, out string PRIORIDAD_URGENCIA, out string ESPECIALIDAD_URGENCIA, out string DIAGNOSTICO_URGENCIA)
        {
            Urgencia u = new Urgencia();
            ID_URGENCIA = u.IdUrgencia;
            NUMEROBOX = u.Box;
            ENCARGADO = u.Encargado;
            PACIENTE = u.RutPaciente;
            FECHAHORA_URGENCIA = u.FechaHoraUrgencia;
            PRIORIDAD_URGENCIA = u.PrioridadUrgencia;
            ESPECIALIDAD_URGENCIA = u.EspecialidadUrgencia;
            DIAGNOSTICO_URGENCIA = u.DiagnosticoUrgencia;

            try
            {
                SqlCommand com = new SqlCommand();
                

                com.CommandText = "select * from URGENCIA where ID_URGENCIA='" + id + "'";
                com.Connection = Conexion.Instance.Con;

                SqlDataReader ejecuta = com.ExecuteReader();

                if (ejecuta.Read() == true)
                {
                    u.IdUrgencia = (int)(ejecuta["ID_URGENCIA"]);
                    u.RutPaciente = (string)(ejecuta["PACIENTE"]);
                    u.Encargado = (string)(ejecuta["ENCARGADO"]);
                    u.EspecialidadUrgencia = ((string)(ejecuta["ESPECIALIDAD_URGENCIA"])).Trim();
                    u.PrioridadUrgencia = ((string)(ejecuta["PRIORIDAD_URGENCIA"])).Trim();
                    u.DiagnosticoUrgencia = ((string)(ejecuta["DIAGNOSTICO_URGENCIA"])).Trim();
                    u.FechaHoraUrgencia = (DateTime)(ejecuta["FECHAHORA_URGENCIA"]);
                    u.Box = (int)(ejecuta["NUMEROBOX"]);
                    ID_URGENCIA = u.IdUrgencia;
                    NUMEROBOX = u.Box;
                    ENCARGADO = u.Encargado;
                    PACIENTE = u.RutPaciente;
                    FECHAHORA_URGENCIA = u.FechaHoraUrgencia;
                    PRIORIDAD_URGENCIA = u.PrioridadUrgencia;
                    ESPECIALIDAD_URGENCIA = u.EspecialidadUrgencia;
                    DIAGNOSTICO_URGENCIA = u.DiagnosticoUrgencia;
                }
                else
                {
                    u = null;
                    return false;
                }
                Conexion.Instance.Con.Close();
                return true;
            }
            catch (Exception e)
            {
                Conexion.Instance.Con.Close();
                Console.WriteLine(e.Message);
                return false;
                throw;
            }
        }
    }
}
